#include "gtkgesturemultipress.h"
#include "gtkgesturedrag.h"
#include "gtkeventcontrollerscroll.h"
+#include "gtkeventcontrollerkey.h"
#define TIMEOUT_INITIAL 500
#define TIMEOUT_REPEAT 50
GtkGesture *press_gesture;
GtkGesture *drag_gesture;
GtkEventController *scroll_controller;
+ GtkEventController *key_controller;
};
static void gtk_calendar_finalize (GObject *calendar);
double x,
double y,
gpointer data);
-static gboolean gtk_calendar_key_press (GtkWidget *widget,
- GdkEventKey *event);
+static gboolean gtk_calendar_key_controller_key_pressed (GtkEventControllerKey *controller,
+ guint keyval,
+ guint keycode,
+ GdkModifierType state,
+ GtkWidget *widget);
static gboolean gtk_calendar_event (GtkWidget *widget,
GdkEvent *event);
static void gtk_calendar_grab_notify (GtkWidget *widget,
widget_class->snapshot = gtk_calendar_snapshot;
widget_class->measure = gtk_calendar_measure;
widget_class->size_allocate = gtk_calendar_size_allocate;
- widget_class->key_press_event = gtk_calendar_key_press;
widget_class->state_flags_changed = gtk_calendar_state_flags_changed;
widget_class->grab_notify = gtk_calendar_grab_notify;
widget_class->event = gtk_calendar_event;
G_CALLBACK (gtk_calendar_scroll_controller_scroll),
calendar);
+ priv->key_controller =
+ gtk_event_controller_key_new (GTK_WIDGET (calendar));
+ g_signal_connect (priv->key_controller, "key-pressed",
+ G_CALLBACK (gtk_calendar_key_controller_key_pressed),
+ calendar);
+
if (!default_abbreviated_dayname[0])
for (i=0; i<7; i++)
{
g_object_unref (priv->press_gesture);
g_object_unref (priv->drag_gesture);
g_object_unref (priv->scroll_controller);
+ g_object_unref (priv->key_controller);
G_OBJECT_CLASS (gtk_calendar_parent_class)->finalize (object);
}
}
static gboolean
-gtk_calendar_key_press (GtkWidget *widget,
- GdkEventKey *event)
+gtk_calendar_key_controller_key_pressed (GtkEventControllerKey *controller,
+ guint keyval,
+ guint keycode,
+ GdkModifierType state,
+ GtkWidget *widget)
{
GtkCalendar *calendar = GTK_CALENDAR (widget);
GtkCalendarPrivate *priv = calendar->priv;
gint old_focus_row;
gint old_focus_col;
gint row, col, day;
- guint keyval, state;
return_val = FALSE;
- if (!gdk_event_get_keyval ((GdkEvent *) event, &keyval) ||
- !gdk_event_get_state ((GdkEvent *) event, &state))
- return return_val;
-
old_focus_row = priv->focus_row;
old_focus_col = priv->focus_col;